
//Tableau de pattern
PATTERNS = [];

var ip = 0;


//Difficulté EASY

//#0 Lance Flamme Gauche Inactive
PATTERNS[ip] = [];
PATTERNS[ip].push({
		name   : "murTop",
		sprite : {
			img : 'assets/J1_murTop.jpg',
			bgx : 0,
		 	bgy : 0,
		 	w   : 960,
		 	h   : 96,
		 	bgw : 960,	// WIDTH TOTALE DU SPRITE
		 	bgh : 96	// HEIGHT TOTALE DU SPRITE
		},
		bounds : {
			x : 0,
			y : 0,
			w : 960,
			h : 96,
			c : '#000'
		},
		tag : 'block',
		mvt: true
	});
PATTERNS[ip].push({
		name   : "baseLanceFlamme",
		sprite : {
			img : 'assets/J1_baseLanceFlamme_left.png',
			bgx : 0,
		 	bgy : 0,
		 	w   : 95,
		 	h   : 107,	
		 	bgw : 95,	// WIDTH TOTALE DU SPRITE
		 	bgh : 107	// HEIGHT TOTALE DU SPRITE
		},
		bounds : {
			x : 14*48 - (95%48),
			y : 5*48  - (107%48),
			w : 1*48,
			h : 2*48,
			c : '#000'
		},
		tag : 'block',
		mvt: true
	});
PATTERNS[ip].push({
		name   : "lanceFlamme",
		sprite : {
			img : 'assets/J1_lanceFlamme_left.png',
			bgx : 0,
		 	bgy : 48,
		 	w   : 288,
		 	h   : 48,
		 	bgw : 288,	// WIDTH TOTALE DU SPRITE
		 	bgh : 432,	// HEIGHT TOTALE DU SPRITE
		 	k 	: 0 	// PARAMETRE DE VITESSE DE L'ANIMATION
		},
		bounds : {
			x : 7*48,
			y : 6*48,
			w : 6*48,
			h : 9*48,
			c : '#fe0061'
		},
		active : false,
		tag : 'trap',
		mvt: true,
		update : function(){
			this.render();
		},
		render : function(){
			var s = this.sprite;
			++s.k;
			if( s.k >= 4 ) {
				s.k = 0;
				s.bgy += s.h; // On bouge le canvas du character sur l'horizontale |>>|>>|>>|
				if (s.bgy >= s.bgh) { // Si on arrive au bout de l'image, on remet à 0 la position d'affichage du background
					s.bgy = 0;
				}
			}
		},
		collide : function(){
			gameJ1.character.parameters.life = 0;
		}
	});
++ip;

//#1 Lance Flamme Haut Inactive
PATTERNS[ip] = [];
PATTERNS[ip].push({
		name   : "murTop",
		sprite : {
			img : 'assets/J1_murTop.jpg',
			bgx : 0,
		 	bgy : 0,
		 	w   : 960,
		 	h   : 96,
		 	bgw : 960,	// WIDTH TOTALE DU SPRITE
		 	bgh : 96	// HEIGHT TOTALE DU SPRITE
		},
		bounds : {
			x : 0,
			y : 0,
			w : 960,
			h : 96,
			c : '#000'
		},
		tag : 'block',
		mvt: true
	});
PATTERNS[ip].push({
		name   : "lanceFlamme",
		sprite : {
			img : 'assets/J1_lanceFlamme_up.png',
			bgx : 0,
		 	bgy : 0,
		 	w   : 48,
		 	h   : 288,
		 	bgw : 432,	// WIDTH TOTALE DU SPRITE
		 	bgh : 288,	// HEIGHT TOTALE DU SPRITE
		 	k 	: 0 	// PARAMETRE DE VITESSE DE L'ANIMATION
		},
		bounds : {
			x : 10*48,
			y : 2*48 + 48/2,
			w : 9*48,
			h : 6*48,
			c : '#fe0061'
		},
		active : true,
		tag : 'trap',
		mvt: true,
		update : function(){
			if(this.active)
				this.render();
		},
		render : function(){
			var s = this.sprite;
			++s.k;
			if( s.k >= 4 ) {
				s.k = 0;
				s.bgx += s.w; // On bouge le canvas du character sur l'horizontale |>>|>>|>>|
				if (s.bgx >= s.bgw) { // Si on arrive au bout de l'image, on remet à 0 la position d'affichage du background
					s.bgx = 0;
				}
			}
		},
		collide : function(){
			gameJ1.character.parameters.life = 0;
		}
	});
PATTERNS[ip].push({
		name   : "baseLanceFlamme",
		sprite : {
			img : 'assets/J1_baseLanceFlamme_up.png',
			bgx : 0,
		 	bgy : 0,
		 	w   : 51,
		 	h   : 141,	
		 	bgw : 51,	// WIDTH TOTALE DU SPRITE
		 	bgh : 141	// HEIGHT TOTALE DU SPRITE
		},
		bounds : {
			x : 10*48 - (51%48),
			y : 9*48  - (141%48),
			w : 1*48,
			h : 2*48,
			c : '#000'
		},
		tag : 'block',
		mvt: true
	});
++ip;

//#2 Lance Flamme Bas Inactive
PATTERNS[ip] = [];
PATTERNS[ip].push({
		name   : "murTop",
		sprite : {
			img : 'assets/J1_murTop.jpg',
			bgx : 0,
		 	bgy : 0,
		 	w   : 960,
		 	h   : 96,
		 	bgw : 960,	// WIDTH TOTALE DU SPRITE
		 	bgh : 96	// HEIGHT TOTALE DU SPRITE
		},
		bounds : {
			x : 0,
			y : 0,
			w : 960,
			h : 96,
			c : '#000'
		},
		tag : 'block',
		mvt: true
	});
PATTERNS[ip].push({
		name   : "baseLanceFlamme",
		sprite : {
			img : 'assets/J1_baseLanceFlamme_down.png',
			bgx : 0,
		 	bgy : 0,
		 	w   : 51,
		 	h   : 141,	
		 	bgw : 51,	// WIDTH TOTALE DU SPRITE
		 	bgh : 141	// HEIGHT TOTALE DU SPRITE
		},
		bounds : {
			x : 12*48 - (51%48),
			y : 2*48  - (141%48),
			w : 1*48,
			h : 2*48,
			c : '#000'
		},
		tag : 'block',
		mvt: true
	});
PATTERNS[ip].push({
		name   : "lanceFlamme",
		sprite : {
			img : 'assets/J1_lanceFlamme_down.png',
			bgx : 0,
		 	bgy : 0,
		 	w   : 48,
		 	h   : 288,
		 	bgw : 432,	// WIDTH TOTALE DU SPRITE
		 	bgh : 288,	// HEIGHT TOTALE DU SPRITE
		 	k 	: 0 	// PARAMETRE DE VITESSE DE L'ANIMATION
		},
		bounds : {
			x : 12*48,
			y : 4*48,
			w : 9*48,
			h : 6*48,
			c : '#fe0061'
		},
		active : true,
		tag : 'trap',
		mvt: true,
		update : function(){
			if(this.active)
				this.render();
		},
		render : function(){
			var s = this.sprite;
			++s.k;
			if( s.k >= 4 ) {
				s.k = 0;
				s.bgx += s.w; // On bouge le canvas du character sur l'horizontale |>>|>>|>>|
				if (s.bgx >= s.bgw) { // Si on arrive au bout de l'image, on remet à 0 la position d'affichage du background
					s.bgx = 0;
				}
			}
		},
		collide : function(){
			gameJ1.character.parameters.life = 0;
		}
	});

++ip;

//#3 Lance Flamme Haut Actif
PATTERNS[ip] = [];
PATTERNS[ip].push({
		name   : "murTop",
		sprite : {
			img : 'assets/J1_murTop.jpg',
			bgx : 0,
		 	bgy : 0,
		 	w   : 960,
		 	h   : 96,
		 	bgw : 960,	// WIDTH TOTALE DU SPRITE
		 	bgh : 96	// HEIGHT TOTALE DU SPRITE
		},
		bounds : {
			x : 0,
			y : 0,
			w : 960,
			h : 96,
			c : '#000'
		},
		tag : 'block',
		mvt: true
	});
PATTERNS[ip].push({
		name   : "lanceFlamme",
		sprite : {
			img : 'assets/J1_lanceFlamme_up.png',
			bgx : 48,
		 	bgy : 0,
		 	w   : 48,
		 	h   : 288,
		 	bgw : 432,	// WIDTH TOTALE DU SPRITE
		 	bgh : 288,	// HEIGHT TOTALE DU SPRITE
		 	k 	: 0 	// PARAMETRE DE VITESSE DE L'ANIMATION
		},
		bounds : {
			x : 10*48,
			y : 2*48 + 48/2,
			w : 9*48,
			h : 6*48,
			c : '#fe0061'
		},
		active : true,
		tag : 'trap',
		mvt: true,
		update : function(){
			this.render();
		},
		render : function(){
			var s = this.sprite;
			++s.k;
			if( s.k >= 4 ) {
				s.k = 0;
				s.bgx += s.w; // On bouge le canvas du character sur l'horizontale |>>|>>|>>|
				if (s.bgx >= s.bgw) { // Si on arrive au bout de l'image, on remet à 0 la position d'affichage du background
					s.bgx = 0;
				}
			}
		},
		collide : function(){
			gameJ1.character.parameters.life = 0;
		}
	});
PATTERNS[ip].push({
		name   : "baseLanceFlamme",
		sprite : {
			img : 'assets/J1_baseLanceFlamme_up.png',
			bgx : 0,
		 	bgy : 0,
		 	w   : 51,
		 	h   : 141,	
		 	bgw : 51,	// WIDTH TOTALE DU SPRITE
		 	bgh : 141	// HEIGHT TOTALE DU SPRITE
		},
		bounds : {
			x : 10*48 - (51%48),
			y : 9*48  - (141%48),
			w : 1*48,
			h : 2*48,
			c : '#000'
		},
		tag : 'block',
		mvt: true
	});
++ip;

//#4 Porte fermée avec Murs
PATTERNS[ip] = [];
PATTERNS[ip].push({
		name   : "murVertical",
		sprite : {
			img : 'assets/J1_mur1.jpg',
			bgx : 0,
		 	bgy : 0,
		 	w   : 6,
		 	h   : 48,	
		 	bgw : 6,	// WIDTH TOTALE DU SPRITE
		 	bgh : 48	// HEIGHT TOTALE DU SPRITE
		},
		bounds : {
			x : 8*48,
			y : 4*48,
			w : 1*48,
			h : 3*48,
			c : '#000'
		},
		tag : 'block',
		mvt: true
	});
PATTERNS[ip].push({
		name   : "murVertical",
		sprite : {
			img : 'assets/J1_mur1.jpg',
			bgx : 0,
		 	bgy : 0,
		 	w   : 6,
		 	h   : 48,	
		 	bgw : 6,	// WIDTH TOTALE DU SPRITE
		 	bgh : 48	// HEIGHT TOTALE DU SPRITE
		},
		bounds : {
			x : 8*48,
			y : 3*48,
			w : 1*48,
			h : 3*48,
			c : '#000'
		},
		tag : 'block',
		mvt: true
	});

PATTERNS[ip].push({
		name   : "murVertical",
		sprite : {
			img : 'assets/J1_mur1.jpg',
			bgx : 0,
		 	bgy : 0,
		 	w   : 6,
		 	h   : 48,	
		 	bgw : 6,	// WIDTH TOTALE DU SPRITE
		 	bgh : 48	// HEIGHT TOTALE DU SPRITE
		},
		bounds : {
			x : 8*48,
			y : 2*48,
			w : 6,
			h : 1*48,
			c : '#000'
		},
		tag : 'block',
		mvt: true
	});

PATTERNS[ip].push({
		name   : "murHozitontal",
		sprite : {
			img : 'assets/J1_mur2.jpg',
			bgx : 0,
		 	bgy : 0,
		 	w   : 48,
		 	h   : 96,	
		 	bgw : 48,	// WIDTH TOTALE DU SPRITE
		 	bgh : 96	// HEIGHT TOTALE DU SPRITE
		},
		bounds : {
			x : 12*48,
			y : 5*48,
			w : 1*48,
			h : 2*48,
			c : '#000'
		},
		tag : 'block',
		mvt: true
	});

PATTERNS[ip].push({
		name   : "murVertical",
		sprite : {
			img : 'assets/J1_mur1.jpg',
			bgx : 0,
		 	bgy : 0,
		 	w   : 6,
		 	h   : 48,	
		 	bgw : 6,	// WIDTH TOTALE DU SPRITE
		 	bgh : 48	// HEIGHT TOTALE DU SPRITE
		},
		bounds : {
			x : 13*48,
			y : 5*48,
			w : 6,
			h : 1*48,
			c : '#000'
		},
		tag : 'block',
		mvt: true
	});

PATTERNS[ip].push({
		name   : "murVertical",
		sprite : {
			img : 'assets/J1_mur1.jpg',
			bgx : 0,
		 	bgy : 0,
		 	w   : 6,
		 	h   : 48,	
		 	bgw : 6,	// WIDTH TOTALE DU SPRITE
		 	bgh : 48	// HEIGHT TOTALE DU SPRITE
		},
		bounds : {
			x : 13*48,
			y : 6*48,
			w : 6,
			h : 1*48,
			c : '#000'
		},
		tag : 'block',
		mvt: true
	});

PATTERNS[ip].push({
		name   : "murVertical",
		sprite : {
			img : 'assets/J1_mur1.jpg',
			bgx : 0,
		 	bgy : 0,
		 	w   : 6,
		 	h   : 48,	
		 	bgw : 6,	// WIDTH TOTALE DU SPRITE
		 	bgh : 48	// HEIGHT TOTALE DU SPRITE
		},
		bounds : {
			x : 13*48,
			y : 7*48,
			w : 6,
			h : 1*48,
			c : '#000'
		},
		tag : 'block',
		mvt: true
	});


PATTERNS[ip].push({
		name   : "murVertical",
		sprite : {
			img : 'assets/J1_mur1.jpg',
			bgx : 0,
		 	bgy : 0,
		 	w   : 6,
		 	h   : 48,	
		 	bgw : 6,	// WIDTH TOTALE DU SPRITE
		 	bgh : 48	// HEIGHT TOTALE DU SPRITE
		},
		bounds : {
			x : 13*48,
			y : 8*48,
			w : 6,
			h : 1*48,
			c : '#000'
		},
		tag : 'block',
		mvt: true
	});

PATTERNS[ip].push({
		name   : "murVertical",
		sprite : {
			img : 'assets/J1_mur1.jpg',
			bgx : 0,
		 	bgy : 0,
		 	w   : 6,
		 	h   : 48,	
		 	bgw : 6,	// WIDTH TOTALE DU SPRITE
		 	bgh : 48	// HEIGHT TOTALE DU SPRITE
		},
		bounds : {
			x : 13*48,
			y : 9*48,
			w : 6,
			h : 1*48,
			c : '#000'
		},
		tag : 'block',
		mvt: true
	});


PATTERNS[ip].push({
		name   : "porteHorizontale",
		sprite : {
			img : 'assets/J1_porteHoriztontale.png',
			bgx : 1344,
		 	bgy : 0,
		 	w   : 48,
		 	h   : 144,	
		 	bgw : 48,	// WIDTH TOTALE DU SPRITE
		 	bgh : 144	// HEIGHT TOTALE DU SPRITE
		},
		bounds : {
			x : 8*48,
			y : 4*48,
			w : 1*48,
			h : 3*48,
			c : '#000'
		},
		tag : 'block',
		mvt: true
	});
PATTERNS[ip].push({
		name   : "porteHorizontale",
		sprite : {
			img : 'assets/J1_porteHoriztontale.png',
			bgx : 1344 + 3*48,
		 	bgy : 0,
		 	w   : 48,
		 	h   : 144,	
		 	bgw : 48,	// WIDTH TOTALE DU SPRITE
		 	bgh : 144	// HEIGHT TOTALE DU SPRITE
		},
		bounds : {
			x : 11*48,
			y : 4*48 ,
			w : 1*48,
			h : 3*48,
			c : '#000'
		},
		tag : 'block',
		mvt: true
	});


collider = {
		name   : "collider",
		sprite : {},
		bounds : {
			x : 0,
			y : 0 ,
			w : 2*48,
			h : 2*48,
			c : '#000'
		},
		tag : 'block',
		mvt: true,
		display : 'none'
	}
PATTERNS[ip].push(collider);



PATTERNS[ip].push({
		name   : "porteHorizontale",
		sprite : {
			img : 'assets/J1_porteHoriztontale.png',
			bgx : 0,
		 	bgy : 0,
		 	w   : 192,
		 	h   : 144,
		 	bgw : 2800,	// WIDTH TOTALE DU SPRITE
		 	bgh : 144,	// HEIGHT TOTALE DU SPRITE
		 	k 	: 0 	// PARAMETRE DE VITESSE DE L'ANIMATION
		},
		bounds : {
			x : 8*48,
			y : 4*48,
			w : 9*48,
			h : 6*48,
			c : '#fe0061'
		},
		active : true,
		tag : 'trap',
		mvt: true,
		animate : true,
		collider : collider,
		update : function(){
			this.render();
			var b = gameJ1.character.bounds;

			var c = this.collider;
			
			if(this.active){
				c.tag = 'block';
				c.bounds.x = this.bounds.x + 48;
				c.bounds.y = this.bounds.y + 48;

				//ctx[gameJ1.J].fillStyle = c.bounds.c;
				//ctx[gameJ1.J].fillRect(c.bounds.x, c.bounds.y, c.bounds.w, c.bounds.h);
			}else{
				c.tag = 'hidden';
			}

		},
		render : function(img){
			var s = this.sprite;
			//Si porte ouverte
			if(this.active == false){
				if((s.bgx + (img * s.w) < s.bgw / 2))
					s.bgx += img*s.w;
				else{
					s.bgx = (s.bgw / 2) % s.bgw - s.w/2 + 40;
				}
			//Si porte fermée
			}else if(this.active == true){
				if((s.bgx + (img * s.w) < s.bgw))
					s.bgx += img*s.w;
				else{
					s.bgx = 0;
				}
			}
		},
		collide : function(){
			if(this.active){
				return false;
			}
		}
	});

PATTERNS[ip].push({
		name   : "baseLanceFlamme",
		sprite : {
			img : 'assets/J1_baseLanceFlamme_down.png',
			bgx : 0,
		 	bgy : 0,
		 	w   : 51,
		 	h   : 141,	
		 	bgw : 51,	// WIDTH TOTALE DU SPRITE
		 	bgh : 141	// HEIGHT TOTALE DU SPRITE
		},
		bounds : {
			x : 16*48 - (51%48),
			y : 2*48  - (141%48),
			w : 1*48,
			h : 2*48,
			c : '#000'
		},
		tag : 'block',
		mvt: true
	});
PATTERNS[ip].push({
		name   : "lanceFlamme",
		sprite : {
			img : 'assets/J1_lanceFlamme_down.png',
			bgx : 0,
		 	bgy : 0,
		 	w   : 48,
		 	h   : 288,
		 	bgw : 432,	// WIDTH TOTALE DU SPRITE
		 	bgh : 288,	// HEIGHT TOTALE DU SPRITE
		 	k 	: 0 	// PARAMETRE DE VITESSE DE L'ANIMATION
		},
		bounds : {
			x : 16*48,
			y : 4*48,
			w : 9*48,
			h : 6*48,
			c : '#fe0061'
		},
		active : true,
		tag : 'trap',
		mvt: true,
		update : function(){
			if(this.active)
				this.render();
		},
		render : function(){
			var s = this.sprite;
			++s.k;
			if( s.k >= 4 ) {
				s.k = 0;
				s.bgx += s.w; // On bouge le canvas du character sur l'horizontale |>>|>>|>>|
				if (s.bgx >= s.bgw) { // Si on arrive au bout de l'image, on remet à 0 la position d'affichage du background
					s.bgx = 0;
				}
			}
		},
		collide : function(){
			if(this.active)
				gameJ1.character.parameters.life = 0;
		}
	});

++ip;

//#5 Lasers
PATTERNS[ip] = [];

PATTERNS[ip].push({
	name   : "murVertical",
	sprite : {
		img : 'assets/J1_mur1.jpg',
		bgx : 0,
	 	bgy : 0,
	 	w   : 6,
	 	h   : 48,	
	 	bgw : 6,	// WIDTH TOTALE DU SPRITE
	 	bgh : 48	// HEIGHT TOTALE DU SPRITE
	},
	bounds : {
		x : 10*48,
		y : 0*48,
		w : 1*48,
		h : 3*48,
		c : '#000'
	},
	tag : 'block',
	mvt: true
});

PATTERNS[ip].push({
	name   : "murVertical",
	sprite : {
		img : 'assets/J1_mur2.jpg',
		bgx : 0,
	 	bgy : 0,
	 	w   : 48,
	 	h   : 96,	
	 	bgw : 48,	// WIDTH TOTALE DU SPRITE
	 	bgh : 96	// HEIGHT TOTALE DU SPRITE
	},
	bounds : {
		x : 10*48,
		y : 1*48,
		w : 1*48,
		h : 2*48,
		c : '#000'
	},
	tag : 'block',
	mvt: true
});
PATTERNS[ip].push({
	name   : "murVertical",
	sprite : {
		img : 'assets/J1_mur2.jpg',
		bgx : 0,
	 	bgy : 0,
	 	w   : 48,
	 	h   : 96,	
	 	bgw : 48,	// WIDTH TOTALE DU SPRITE
	 	bgh : 96	// HEIGHT TOTALE DU SPRITE
	},
	bounds : {
		x : 11*48,
		y : 1*48,
		w : 1*48,
		h : 2*48,
		c : '#000'
	},
	tag : 'block',
	mvt: true
});

PATTERNS[ip].push({
		name   : "baseLaser",
		sprite : {
			img : 'assets/J1_laserFloor.png',
			bgx : 0,
		 	bgy : 0,
		 	w   : 96,
		 	h   : 96,	
		 	bgw : 96,	// WIDTH TOTALE DU SPRITE
		 	bgh : 96	// HEIGHT TOTALE DU SPRITE
		},
		bounds : {
			x : 10*48,
			y : 3*48,
			w : 2*48,
			h : 2*48,
			c : '#000'
		},
		tag : 'trap',
		mvt: true,
		active : true,
		lasers : [],
		maxLasers : 5,
		init : function(){
			var il = 0;
			while(il < this.maxLasers){
				this.lasers.push({
					name   : "laser",
					sprite : {
						img : new Image(),
						bgx : 0,
					 	bgy : 0,
					 	w   : 12,
					 	h   : 192,
					 	bgw : 204,	// WIDTH TOTALE DU SPRITE
					 	bgh : 192,	// HEIGHT TOTALE DU SPRITE
					 	k 	: 0 	// PARAMETRE DE VITESSE DE L'ANIMATION
					},
					bounds : {
						x : 16*48,
						y : 4*48,
						w : 12,
						h : 192
					},
					img    : 'assets/J1_laserAnim.png',
					active : true
				}); 
				++il;
			}
		},
		update : function(){

			

			if(this.lasers.length == 0)
				this.init();
			
			var il = 0;
			
			while(il < this.maxLasers){
				this.lasers[il].bounds.x = 	this.bounds.x + 
										(this.lasers[il].bounds.w * 1.5 * (il) + 6);
				this.lasers[il].bounds.y =	this.bounds.y - this.bounds.h;
				++il;
			}

			if(this.active)
			this.render();
			//this.move();

			if(!this.active)
				this.desactiveLaser();
		},
		render : function(){
			if(this.lasers.length > 0){
				var il = 0;
				while(il < this.maxLasers){
					//log(il);
					if(this.lasers[il].active == true){
						var s = this.lasers[il].sprite;	
						var b = this.lasers[il].bounds;						
						++s.k;
						if( s.k >= 4 ) {
							s.k = 0;
							s.bgx += s.w; // On bouge le canvas du character sur l'horizontale |>>|>>|>>|
							if (s.bgx >= s.bgw) { // Si on arrive au bout de l'image, on remet à 0 la position d'affichage du background
								s.bgx = 0;
							}
						}

						s.img.src = this.lasers[il].img;

						ctx[gameJ1.J].drawImage( s.img,
							s.bgx, // position x en image source
							s.bgy, // position y en image source
							b.w, // largeur image source
							b.h, // hauteur image source
							b.x, // position X sur canvas de destination
							b.y, // position Y sur canvas de destination
							b.w, // largeur Y sur canvas de destination (possibilité de zoom)
							b.h // hauteur Y sur canvas de destination (possibilité de zoom)
						);
						
					}
					++il;
				}
			}
		},
		desactiveLaser : function(){
			if(this.lasers > 0){
				var il = 0;
				while(il < this.maxLasers){
					if(this.lasers[il].active){
						this.lasers[il].active = false;
					}
					++il;
				}
			}
		},
		collide : function(){			
			if(this.active)
				gameJ1.character.parameters.life = 0;	
		},
		move : function(){
			if(	this.bounds.y + this.bounds.s > 2*48 + 24 &&
				this.bounds.y + this.bounds.h + this.bounds.s < 10*48 - 24)
				this.bounds.y += this.bounds.s;
			else{
				this.bounds.s = -this.bounds.s;
			}
				
		}
	});

PATTERNS[ip].push({
	name   : "murVertical",
	sprite : {
		img : 'assets/J1_mur1.jpg',
		bgx : 0,
	 	bgy : 0,
	 	w   : 6,
	 	h   : 48,	
	 	bgw : 6,	// WIDTH TOTALE DU SPRITE
	 	bgh : 48	// HEIGHT TOTALE DU SPRITE
	},
	bounds : {
		x : 12*48 - 6,
		y : 0*48,
		w : 1*48,
		h : 3*48,
		c : '#000'
	},
	tag : 'block',
	mvt: true
});

PATTERNS[ip].push({
	name   : "murVertical",
	sprite : {
		img : 'assets/J1_mur2.jpg',
		bgx : 0,
	 	bgy : 0,
	 	w   : 48,
	 	h   : 96,	
	 	bgw : 48,	// WIDTH TOTALE DU SPRITE
	 	bgh : 96	// HEIGHT TOTALE DU SPRITE
	},
	bounds : {
		x : 10*48,
		y : 5*48,
		w : 1*48,
		h : 2*48,
		c : '#000'
	},
	tag : 'block',
	mvt: true
});

PATTERNS[ip].push({
	name   : "murVertical",
	sprite : {
		img : 'assets/J1_mur2.jpg',
		bgx : 0,
	 	bgy : 0,
	 	w   : 48,
	 	h   : 96,	
	 	bgw : 48,	// WIDTH TOTALE DU SPRITE
	 	bgh : 96	// HEIGHT TOTALE DU SPRITE
	},
	bounds : {
		x : 11*48,
		y : 5*48,
		w : 1*48,
		h : 2*48,
		c : '#000'
	},
	tag : 'block',
	mvt: true
});


++ip;
PATTERNS[ip] = [];
PATTERNS[ip].push({
	name   : "murVertical",
	sprite : {
		img : 'assets/J1_mur1.jpg',
		bgx : 0,
	 	bgy : 0,
	 	w   : 6,
	 	h   : 48,	
	 	bgw : 6,	// WIDTH TOTALE DU SPRITE
	 	bgh : 48	// HEIGHT TOTALE DU SPRITE
	},
	bounds : {
		x : 10*48,
		y : 0*48,
		w : 1*48,
		h : 3*48,
		c : '#000'
	},
	tag : 'block',
	mvt: true
});

PATTERNS[ip].push({
	name   : "murVertical",
	sprite : {
		img : 'assets/J1_mur2.jpg',
		bgx : 0,
	 	bgy : 0,
	 	w   : 48,
	 	h   : 96,	
	 	bgw : 48,	// WIDTH TOTALE DU SPRITE
	 	bgh : 96	// HEIGHT TOTALE DU SPRITE
	},
	bounds : {
		x : 10*48,
		y : 1*48,
		w : 1*48,
		h : 2*48,
		c : '#000'
	},
	tag : 'block',
	mvt: true
});
PATTERNS[ip].push({
	name   : "murVertical",
	sprite : {
		img : 'assets/J1_mur2.jpg',
		bgx : 0,
	 	bgy : 0,
	 	w   : 48,
	 	h   : 96,	
	 	bgw : 48,	// WIDTH TOTALE DU SPRITE
	 	bgh : 96	// HEIGHT TOTALE DU SPRITE
	},
	bounds : {
		x : 11*48,
		y : 1*48,
		w : 1*48,
		h : 2*48,
		c : '#000'
	},
	tag : 'block',
	mvt: true
});

PATTERNS[ip].push({
		name   : "baseLaser",
		sprite : {
			img : 'assets/J1_laserFloor.png',
			bgx : 0,
		 	bgy : 0,
		 	w   : 96,
		 	h   : 96,	
		 	bgw : 96,	// WIDTH TOTALE DU SPRITE
		 	bgh : 96	// HEIGHT TOTALE DU SPRITE
		},
		bounds : {
			x : 10*48,
			y : 3*48,
			w : 2*48,
			h : 2*48,
			c : '#000'
		},
		tag : 'trap',
		mvt: true,
		active : true,
		lasers : [],
		maxLasers : 5,
		init : function(){
			var il = 0;
			while(il < this.maxLasers){
				this.lasers.push({
					name   : "laser",
					sprite : {
						img : new Image(),
						bgx : 0,
					 	bgy : 0,
					 	w   : 12,
					 	h   : 192,
					 	bgw : 204,	// WIDTH TOTALE DU SPRITE
					 	bgh : 192,	// HEIGHT TOTALE DU SPRITE
					 	k 	: 0 	// PARAMETRE DE VITESSE DE L'ANIMATION
					},
					bounds : {
						x : 16*48,
						y : 4*48,
						w : 12,
						h : 192
					},
					img    : 'assets/J1_laserAnim.png',
					active : true
				}); 
				++il;
			}
		},
		update : function(){

			

			if(this.lasers.length == 0)
				this.init();
			
			var il = 0;
			
			while(il < this.maxLasers){
				this.lasers[il].bounds.x = 	this.bounds.x + 
										(this.lasers[il].bounds.w * 1.5 * (il) + 6);
				this.lasers[il].bounds.y =	this.bounds.y - this.bounds.h;
				++il;
			}

			this.render();
			this.move();
		},
		render : function(){
			if(this.lasers.length > 0){
				var il = 0;
				while(il < this.maxLasers){
					//log(il);
					if(this.lasers[il].active == true){
						var s = this.lasers[il].sprite;	
						var b = this.lasers[il].bounds;						
						++s.k;
						if( s.k >= 4 ) {
							s.k = 0;
							s.bgx += s.w; // On bouge le canvas du character sur l'horizontale |>>|>>|>>|
							if (s.bgx >= s.bgw) { // Si on arrive au bout de l'image, on remet à 0 la position d'affichage du background
								s.bgx = 0;
							}
						}

						s.img.src = this.lasers[il].img;

						ctx[gameJ1.J].drawImage( s.img,
							s.bgx, // position x en image source
							s.bgy, // position y en image source
							b.w, // largeur image source
							b.h, // hauteur image source
							b.x, // position X sur canvas de destination
							b.y, // position Y sur canvas de destination
							b.w, // largeur Y sur canvas de destination (possibilité de zoom)
							b.h // hauteur Y sur canvas de destination (possibilité de zoom)
						);
						
					}
					++il;
				}
			}
		},
		desactiveLaser : function(){
			if(this.lasers > 0){
				var il = 0;
				while(il < this.maxLasers){
					if(this.lasers[il].active){
						this.lasers[il].active = false;
						if(il == this.maxLasers - 1)
							this.active = false;
						else
							il = this.maxLasers;
					}
					++il;
				}
			}
		},
		collide : function(){
			
			if(this.lasers[0].y + this.lasers[0].h < gameJ1.character.bounds.y && 
				this.lasers[0].y + this.lasers[0].h >gameJ1.character.bounds.y + gameJ1.character.bounds.w)
				gameJ1.character.parameters.life = 0;
		},
		move : function(){
			if(	this.bounds.y + this.bounds.s > 2*48 + 24 &&
				this.bounds.y + this.bounds.h + this.bounds.s < 10*48 - 24)
				this.bounds.y += this.bounds.s;
			else{
				this.bounds.s = -this.bounds.s;
			}
				
		}
	});

PATTERNS[ip].push({
	name   : "murVertical",
	sprite : {
		img : 'assets/J1_mur1.jpg',
		bgx : 0,
	 	bgy : 0,
	 	w   : 6,
	 	h   : 48,	
	 	bgw : 6,	// WIDTH TOTALE DU SPRITE
	 	bgh : 48	// HEIGHT TOTALE DU SPRITE
	},
	bounds : {
		x : 12*48 - 6,
		y : 0*48,
		w : 1*48,
		h : 3*48,
		c : '#000'
	},
	tag : 'block',
	mvt: true
});

PATTERNS[ip].push({
	name   : "murVertical",
	sprite : {
		img : 'assets/J1_mur2.jpg',
		bgx : 0,
	 	bgy : 0,
	 	w   : 48,
	 	h   : 96,	
	 	bgw : 48,	// WIDTH TOTALE DU SPRITE
	 	bgh : 96	// HEIGHT TOTALE DU SPRITE
	},
	bounds : {
		x : 10*48,
		y : 5*48,
		w : 1*48,
		h : 2*48,
		c : '#000'
	},
	tag : 'block',
	mvt: true
});

PATTERNS[ip].push({
	name   : "murVertical",
	sprite : {
		img : 'assets/J1_mur2.jpg',
		bgx : 0,
	 	bgy : 0,
	 	w   : 48,
	 	h   : 96,	
	 	bgw : 48,	// WIDTH TOTALE DU SPRITE
	 	bgh : 96	// HEIGHT TOTALE DU SPRITE
	},
	bounds : {
		x : 11*48,
		y : 5*48,
		w : 1*48,
		h : 2*48,
		c : '#000'
	},
	tag : 'block',
	mvt: true
});


PATTERNS[ip].push({
		name   : "baseLanceFlamme",
		sprite : {
			img : 'assets/J1_baseLanceFlamme_left.png',
			bgx : 0,
		 	bgy : 0,
		 	w   : 95,
		 	h   : 107,	
		 	bgw : 95,	// WIDTH TOTALE DU SPRITE
		 	bgh : 107	// HEIGHT TOTALE DU SPRITE
		},
		bounds : {
			x : 19*48 - (95%48),
			y : 6*48  - (107%48),
			w : 1*48,
			h : 2*48,
			c : '#000'
		},
		tag : 'block',
		mvt: true
	});
PATTERNS[ip].push({
		name   : "lanceFlamme",
		sprite : {
			img : 'assets/J1_lanceFlamme_left.png',
			bgx : 0,
		 	bgy : 48,
		 	w   : 288,
		 	h   : 48,
		 	bgw : 288,	// WIDTH TOTALE DU SPRITE
		 	bgh : 432,	// HEIGHT TOTALE DU SPRITE
		 	k 	: 0 	// PARAMETRE DE VITESSE DE L'ANIMATION
		},
		bounds : {
			x : 12*48,
			y : 7*48,
			w : 6*48,
			h : 9*48,
			c : '#fe0061'
		},
		active : true,
		tag : 'trap',
		mvt: true,
		update : function(){
			this.render();
		},
		render : function(){
			var s = this.sprite;
			++s.k;
			if( s.k >= 4 ) {
				s.k = 0;
				s.bgy += s.h; // On bouge le canvas du character sur l'horizontale |>>|>>|>>|
				if (s.bgy >= s.bgh) { // Si on arrive au bout de l'image, on remet à 0 la position d'affichage du background
					s.bgy = 0;
				}
			}
		},
		collide : function(){
			gameJ1.character.parameters.life = 0;
		}
	});


PATTERNS[ip].push({
		name   : "baseLanceFlamme",
		sprite : {
			img : 'assets/J1_baseLanceFlamme_left.png',
			bgx : 0,
		 	bgy : 0,
		 	w   : 95,
		 	h   : 107,	
		 	bgw : 95,	// WIDTH TOTALE DU SPRITE
		 	bgh : 107	// HEIGHT TOTALE DU SPRITE
		},
		bounds : {
			x : 19*48 - (95%48),
			y : 7*48  - (107%48),
			w : 1*48,
			h : 2*48,
			c : '#000'
		},
		tag : 'block',
		mvt: true
	});
PATTERNS[ip].push({
		name   : "lanceFlamme",
		sprite : {
			img : 'assets/J1_lanceFlamme_left.png',
			bgx : 0,
		 	bgy : 48,
		 	w   : 288,
		 	h   : 48,
		 	bgw : 288,	// WIDTH TOTALE DU SPRITE
		 	bgh : 432,	// HEIGHT TOTALE DU SPRITE
		 	k 	: 0 	// PARAMETRE DE VITESSE DE L'ANIMATION
		},
		bounds : {
			x : 12*48,
			y : 8*48,
			w : 6*48,
			h : 9*48,
			c : '#fe0061'
		},
		active : true,
		tag : 'trap',
		mvt: true,
		update : function(){
			this.render();
		},
		render : function(){
			var s = this.sprite;
			++s.k;
			if( s.k >= 4 ) {
				s.k = 0;
				s.bgy += s.h; // On bouge le canvas du character sur l'horizontale |>>|>>|>>|
				if (s.bgy >= s.bgh) { // Si on arrive au bout de l'image, on remet à 0 la position d'affichage du background
					s.bgy = 0;
				}
			}
		},
		collide : function(){
			gameJ1.character.parameters.life = 0;
		}
	});

++ip;
